ROS - Robot Operating System

Allows network of nodes to communicate using pubsub.

Node

A node is a participant in the network graph, which uses a client library to communicate with other nodes.

Nodes can publish to named topics to deliver data to other nodes, or subscribe to topics to receive data from other nodes. They can also act as a service client/server to have another node perform a computation on their behalf/do a computation on behalf of another node.

Long-running computations are done as action client/server instead of service client/server.

Nodes can provide configurable parameters to change run-time behaviour.

Connections between nodes are established through a distributed discovery process.

Discovery

Nodes periodically advertise their presence so that other nodes may connect to them. They also notify other nodes when they go offline.

Interfaces

ROS applications communicate through interfaces of one of three types: topics, services, or actions. ROS uses a definition language called IDL to define these interfaces:

  • .msg files describe the fields of a ROS message.
  • .srv files describe a service. They are composed of two parts: a request and a response. The request and response are message definitions.
  • .action files describe an action, they are composed of three parts: a goal, a result, and feedback. Each part is a message definition.

Messages

Messages are a fire-and-forget way of sending data to other nodes without receiving a response. Messages have fields, which may have a default value, and constants.

Created 6/11/2025
Tended
  • 6/11/2025